package com.zxl.designpattern.structure.adapter;

/**
 * @author zxl
 * @version 1.0
 * @description 支付适配器，将旧的支付系统适配到新的支付系统中
 *  假设系统升级，新的支付系统接收的是个Payment类型的对象，而旧的支付系统接收的是LegacyPaymentSystem类型的对象
 *  为了兼容旧的支付系统，我们需要创建一个适配器类，将LegacyPaymentSystem适配到Payment接口中
 *  适配器类需要实现Payment接口，并且在processPayment方法中调用LegacyPaymentSystem的makePayment方法
 *  并且还可以扩展新的支付系统，比如支付宝支付和微信支付（这点不是适配器模式的核心）
 * @date 2025/6/1 16:36
 */
public class PaymentAdapter extends LegacyPaymentSystem implements Payment{


    /**
     * 处理支付
     * @param amount
     */
    @Override
    public void processPayment(double amount, int paymentType) {
        if (paymentType == 1){
            super.makePayment(amount);
        }else {
            makePayment(amount, paymentType);
        }
    }

    /**
     * 新的支付系统
     * @param amount
     * @param paymentType
     */
    private void makePayment(double amount, int paymentType) {
        if (paymentType == 2){
            System.out.print("处理支付宝支付");
        }else if (paymentType == 3){
            System.out.print("处理微信支付");
        }else {
            System.out.print("不支持的支付类型");
        }
        System.out.printf(" 处理金额%.2f%n", amount);
    }

    /****************** 此类是为了实现类适配器，请当下面的不存在，实现仅为了不报错 **********************/

    @Override
    public void processCreditCard(double amount) {

    }

    @Override
    public void processDebitCard(double amount) {

    }

    @Override
    public void processWeixin(double amount) {

    }

    @Override
    public void processAlipay(double amount) {

    }
}
